//目的
/* 
通过localhost：3000 显示首页 - index.html
通过localhost：3000/index.html 显示首页 - index.html
通过localhost：3000/list.html 显示列表页 - list.html

 */


//搭建服务器
const http = require('http')
const fs = require('fs')
http.createServer((req,res)=>{
    //此时，响应都是1111
    // res.end('111') 


    //不同地址，响应不同的内容
    // req.url - 请求行中的请求路径

    // let url = req.url
    // if(url === '/'){
    //     let data = fs.readFileSync('./project/index.html')
    //     res.end(data)
    // }/*else if(url === '/css/index.css'){
    //     let data = fs.readFileSync('./project/css/index.css')
    //     res.end(data)
    // }else if(url === '/js/index.js'){
    //     let data = fs.readFileSync('./project/js/index.js')
    //     res.end(data)
    // }else if(url === '/favicon.ico'){
    //     let data = fs.readFileSync('./project/favicon.ico')
    //     res.end(data)
    // }*/
    // else if(url.includes('.woff') || url.includes('.ttf') ){
    //     url = url.split('?')[0]
    //     console.log(url);
    //     let data = fs.readFileSync('./project' + url)
    //     res.end(data)
    // }
    // else{
    //     let data = fs.readFileSync('./project'+url)
    //     res.end(data)
    // }




    //上面代码简化

    // let url = req.url
    // if(url === '/'){
    //     url = '/index.html'
    // }else if(url.includes('.woff') || url.includes('.ttf')){
    //     url = url.split('?')[0]
    // }
    // let data = fs.readFileSync('./project'+url)
    // res.end(data)





    let url= req.url
    //是接口还是需要显示页面 - 接口
    if(url.startsWith('/api')){
        //接口
        //是什么接口
        if(url === '/api/register'){
            //注册接口
            //接受post提交上来的数据
            let str =''
            req.on('data',chunk=>{
                str += chunk.toString()
            })
            req.on('end',()=>{
                //接收到数据后，需要存起来
                // 先将字符串转成对象
                let arr = str.split('&')
                let obj = {}
                arr.forEach(item=>{
                    let brr = item.split('=')
                    obj[brr[0]] = brr[1]
                })
                //obj就是将str转成对象

                // 从data.json中判断是否有当前用户名
                //读取data.json中的数据
                let data = fs.readFileSync('./project/json/data.json')
                data = data.toString() 
                //判断data是否有数据 
                let pbj = {  
                    code:0,
                    msg:'用户名被占用了'
                }
                //判断是否是第一次注册 - 第一次注册，data是空字符串
                if(data === ''){
                    //准备数组，将刚刚提交上来的数据，存入文件中
                    data = []
                    data.push(obj)
                    fs.writeFileSync('./project/json/data.json',JSON.stringify(data))
                    pbj = {
                        code:1,
                        msg:'注册成功'
                    }
                    res.end(JSON.stringify(pbj))
                }  

                //非第一次提交
                data = JSON.parse(data)
                //判断data中是否有obj中的username
                //判断读取出来的数据（转成数组）判断是否有刚刚提交上来的用户名
                let index = data.findIndex(item=>item.username  === obj.username)
                if(index<0){
                    //没有找到 - 用户名没有被占用 - 存入
                    //没有的话存进去
                    data.push(obj)
                    data = JSON.stringify(data)
                    fs.writeFileSync('./project/json/data.json',data)
                    pbj = {
                        code:1,
                        msg:'注册成功'
                    }
                }
                res.end(JSON.stringify(pbj))

            })
        }else if(url === '/api/login'){
            //接受post数据
            let str = ''
            req.on('data',chunk=>{
                str += chunk.toString()
            })
            req.on('end',()=>{
                let arr = str.split('&')
                let obj = {}
                arr.forEach(item=>{
                    let brr = item.split('=')
                    obj[brr[0]] = brr[1]
                })
                //读取data.json中的数据
                let data = fs.readFileSync('./project/json/data.json')
                data = JSON.parse(data)
                //判断data中是否有obj数据
               let index =  data.findIndex(item=>item.username === obj.username && item.password === obj.password)
                if(index<0){
                    let pbj = {
                        code:0,
                        msg:'用户名或密码错误'
                    }
                    res.end(JSON.stringify(pbj))
                }else{
                    let pbj = {
                        code:1,
                        msg:'登录成功'
                    }
                    res.end(JSON.stringify(pbj))
                }
            })

        }
    }else{
        if(url === '/'){
            url = '/index.html'
        }else if(url.includes('.woff') || url.includes('.ttf')){
            url = url.split('?')[0]
        }
        let data = fs.readFileSync('./project'+url)
        res.end(data)
    }
}).listen(3000)
